package cn.bearspark.file.provider.dao.mapper;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

/**
 * 已使用的文件名的数据映射接口
 *
 * @author f
 */
@Mapper
public interface UsefulFileMapper {

    /**
     * 批量添加已使用的文件名
     * <p>
     * 对于重复的文件名，则会忽略它
     *
     * @param filenameList 已使用文件名的集合
     */
    void insertBatch(List<String> filenameList);

    /**
     * 从指定的文件名集合中挑选出已使用的文件名
     *
     * @param filenameList 指定的文件名集合
     * @return 在指定的文件名集合中，已使用的文件名的 Set 集合
     */
    Set<String> getUsefulFilenameSet(List<String> filenameList);

    /**
     * 批量删除已使用的文件名
     *
     * @param filenameList 已使用文件名的集合
     */
    void deleteBatch(List<String> filenameList);

    /**
     * 清理在数据库中存储超过一天的文件名
     *
     * @param yesterday 前一天的时间
     */
    @Delete("DELETE FROM t_useful_file WHERE create_time <= #{yesterday}")
    void deleteBeyondDay(LocalDateTime yesterday);
}
